漫漫長夜 只能寫點程式碼轉移注意力了~
程式碼
bool stop = true; ///是否繼續演算法
double contentValue = 0.0; // 用來存儲匹配的值
double fillLevelValue = 0.0; // 用來存儲匹配的值
double init_ans_low = 10000; // 用來存儲匹配的值
double lest_ans_low = 10000; // 用來存儲匹配的值
string BottleContent_low = "";
string BottleFillLevel_low = "";
double weight = 0;
///當次遍歷的組合
string BContent = "";
string BFillLevel = "";
List<BottleData> countList = new List<BottleData>();
Dictionary<string, int> init_values = new Dictionary<string, int>();
Dictionary<string, int> lest_values = new Dictionary<string, int>();
init_values = new Dictionary<string, int>
{
{ "Water", random.Next(1,10000) },
{ "Ice", random.Next(1,10000) },
{ "Juice", random.Next(1,10000) },
{ "Full", random.Next(1,10000) },
{ "Half", random.Next(1,10000) },
{ "Empty", random.Next(1,10000) }
};
Bottle_keynameans = lightestBottle.GetDescription().Split(',').ToList();
while (stop)
{
// 使用 Dictionary 存儲隨機值與名稱
if (Bottle_keynameans[0] == BContent)
{
lest_values = new Dictionary<string, int>
{
{ "Water", init_values["Water"] },
{ "Ice", init_values["Ice"] },
{ "Juice", init_values["Juice"] },
{ "Full", random.Next(init_values["Full"] * 75 / 100 > 0 ? init_values["Full"] * 75 / 100 : 0, init_values["Full"] * 125 / 100 < 100000 ? init_values["Full"] * 125 / 100 : 1) },
{ "Half", random.Next(init_values["Half"] * 75 / 100 > 0 ? init_values["Half"] * 75 / 100 : 0, init_values["Half"] * 125 / 100 < 100000 ? init_values["Half"] * 125 / 100 : 1) },
{ "Empty", random.Next(init_values["Empty"] * 75 / 100 > 0 ? init_values["Empty"] * 75 / 100 : 0, init_values["Empty"] * 125 / 100 < 100000 ? init_values["Empty"] * 125 / 100 : 1) }
};
}
else if (Bottle_keynameans[1] == BFillLevel)
{
lest_values = new Dictionary<string, int>
{
{ "Water", random.Next(init_values["Water"] * 75 / 100 > 0 ? init_values["Water"] * 75 / 100 : 0, init_values["Water"] * 125 / 100 < 100000 ? init_values["Water"] * 125 / 100 : 1) },
{ "Ice", random.Next(init_values["Ice"] * 75 / 100 > 0 ? init_values["Ice"] * 75 / 100 : 0, init_values["Ice"] * 125 / 100 < 100000 ? init_values["Ice"] * 125 / 100 : 1) },
{ "Juice", random.Next(init_values["Juice"] * 75 / 100 > 0 ? init_values["Juice"] * 75 / 100 : 0, init_values["Juice"] * 125 / 100 < 100000 ? init_values["Juice"] * 125 / 100 : 1) },
{ "Full", init_values["Full"] },
{ "Half", init_values["Half"]},
{ "Empty", init_values["Empty"] }
};
}
else
{
lest_values = new Dictionary<string, int>
{
{ "Water", random.Next(1,10000) },
{ "Ice", random.Next(1,10000) },
{ "Juice", random.Next(1,10000) },
{ "Full", random.Next(1,10000) },
{ "Half", random.Next(1,10000) },
{ "Empty", random.Next(1,10000) }
};
}
///將使用者輸入數量的所有瓶子遍歷
for (int i = 0; i < bottles.Count; i++)
{
Bottle bottle = bottles[i];
stringList = bottle.GetDescription().Split(',').ToList();
BContent = stringList[0];
BFillLevel = stringList[1];
weight = bottle.Get_Tatle_Weight();
Console.WriteLine($"瓶子 {i + 1}:{bottle.GetDescription()}");
// 檢查 BottleContent 是否等於 KeyName,如果是,則存儲對應的值
if (lest_values.ContainsKey(BContent))
{
contentValue = lest_values[BContent];
}
// 檢查 BottleFillLevel 是否等於 KeyName,如果是,則存儲對應的值
if (lest_values.ContainsKey(BFillLevel))
{
fillLevelValue = lest_values[BFillLevel];
}
double ans = contentValue * fillLevelValue / 10000000;
///符合市場上的其中幾項指標
if (Bottle_keynameans[0] == BContent)
{
if (lest_ans_low >= ans)
{
lest_ans_low = ans;
BottleContent_low = BContent;
}
}
if (Bottle_keynameans[1] == BFillLevel)
{
if (lest_ans_low >= ans)
{
lest_ans_low = ans;
BottleFillLevel_low = BFillLevel;
}
}
Console.WriteLine($"對應的值:{ans}");
///終止條件,如果符合市場數據的最佳結果
if (Bottle_keynameans[0] == BottleContent_low && Bottle_keynameans[1] == BottleFillLevel_low)
{
stop = false;
Console.WriteLine($"最低的權重結果:{lest_ans_low} \n組合項目:{BottleContent_low} {BottleFillLevel_low}\n" + JsonConvert.SerializeObject(lest_values));
break;
}
}
///將本次迴圈的值暫存
init_values = lest_values;
};
Console.WriteLine($"最低的權重結果:{lest_ans_low} \n組合項目:{BottleContent_low} {BottleFillLevel_low}\n" + JsonConvert.SerializeObject(lest_values));
希望能夠堅持完成連續30天的挑戰,也希望如果有錯也請各位高手不吝嗇指教!!